import { request } from 'umi';

/**
 * get one record by id
 */
export async function getAdminLbById(id: number, params: object = {}) {
  return request<ApiResponse.ResultModel<AdminLbType.AdminLbResponse>>(
    `/api/adminLb/getById/${id}`,
    {
      method: 'GET',
      params: params,
    },
  );
}

/**
 * get all records
 */
export async function getAdminLbAll(params: object = {}) {
  return request<ApiResponse.ResultModel<AdminLbType.AdminLbResponse>>(`/api/adminLb/getAll`, {
    method: 'GET',
    params: params,
  });
}

/*
 * get records by page
 */
export async function getAdminLbPageList(params: object = {}) {
  return request<PageInfo.PageResponse<AdminLbType.AdminLbResponse>>(`/api/adminLb/getAll`, {
    method: 'GET',
    params: params,
  });
}

/*
 * update partial field of record
 */
export async function commonUpdate(id: number, fieldName: string, value: string) {
  return request<PageInfo.PageResponse<AdminLbType.AdminLb>>(`/api/adminLb/PatchById?id=${id}`, {
    method: 'PATCH',
    headers: {
      'Content-Type': 'application/json',
    },
    data: [
      {
        id: id,
        op: 'replace',
        path: `/${fieldName}`,
        value: value,
      },
    ],
  });
}

/*
 * update record
 */
export async function updateAdminLb(params: AdminLbType.AdminLbResponse) {
  return request<ApiResponse.ResultModel<boolean>>(`/api/adminLb/put`, {
    method: 'put',
    headers: {
      'Content-Type': 'application/json',
    },
    data: [params],
  });
}

/*
 * add one record
 */
export async function addAdminLb(params: AdminLbType.AdminLbResponse) {
  return request<ApiResponse.ResultModel<AdminLbType.AdminLbResponse>>('/api/adminLb/add', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: [params],
  });
}

export async function deleteAdminLb(params: DeleteRequest) {
  return request<ApiResponse.ResultModel<boolean>>(`/api/adminLb/delete`, {
    method: 'DELETE',
    headers: {
      'Content-Type': 'application/json',
    },
    data: [params.id],
  });
}
